// user模块需要改动,所以要清理一下
import { login, getUserProfile, getUserInfo } from '@/api/user'
import { resetRouter } from '@/router'
import { getToken, setToken, removeToken } from '@/utils/auth'

const state = {
  // 创建token
  token: getToken() || '',
  // 将用户信息定义到这里,方便复用
  useInfo: {}
}

const mutations = {
  // 创建两个方法
  // 设置token
  setToken(state, val) {
    state.token = val
    // 将最新token设置到cookies中
    setToken(val)
  },
  // 清除 token
  removeToken(state) {
    state.token = ''
    // 移除token
    removeToken()
  },
  // 创建操作信息的方法
  setUseInfo(state, val) {
    state.useInfo = val
  },
  // 清除用户信息
  removeUseInfo(state) {
    state.useInfo = {}
  }
}

const actions = {
  async userLogin(content, params) {
    const res = await login(params)
    // 成功后将token存入token中
    content.commit('setToken', res.data)
  },
  // 创建导入用户信息的方法
  async getUseInfo(content) {
    // 调用接口,获取用户信息
    const res = await getUserProfile()
    const info = await getUserInfo(res.data.userId)
    content.commit('setUseInfo', { ...res.data, ...info.data })
    return res.data.roles.menus
  },
  // 退出的action
  logout(content) {
    // 移除token
    content.commit('removeToken')
    // 移除用户信息
    content.commit('removeUseInfo')
    // 退出后清空一次路由
    resetRouter()
  }
}

// 导出模块中的数据
export default {
  namespaced: true, // 开启命名空间
  state,
  mutations,
  actions
}

